﻿namespace Sidvall.UI.Navigation
{
	public interface INavigationManager
	{
		int? MaxHistoryItemCount { get; set; }
		int HistoryItemCount { get; }
		bool CanGoBack { get; }
		bool CanGoForward { get; }
		bool CanRefresh { get; }
		NavigationAction CurrentNavigationAction { get; }
		HistoryItem CurrentHistoryItem { get; }

		void AddHistoryItem(HistoryItem state);
		void AddHistoryItem(HistoryItem state, bool setAsCurrentSource);
		void AddHistoryItem(HistoryRegionItem state);
		void ClearHistoryItems();
		void RemoveLastHistoryItem();
		HistoryItem GetHistoryItem(int index);

		void GoBack();
		void GoForward();
		bool GoToPosition(int index);
		bool GoToPosition(int index, bool showViewModel);
		bool Refresh();
	}
}
